<?php
/**
 * 门户板块 --后台管理
 *  id      类别ID    int 主键、自增、无符号、非空
 *  name    类别名称    char(20)    非空
 *  img     缩略图名称   varchar(255)    空
 *  pid     父类ID    int 非空,默认为'0'
 *  path    路径  char(255)   非空,默认为'0'
 *
 * index 首页
 * 
 * 
 */
namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
// use App\Http\Controllers\Admin\AdminController;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;

class PortaltypeController extends Controller
{
       
    //板块管理--查看

    public function getIndex(Request $request)
    {  
        //判断是否有搜索
        if($request -> input('keywords')){
            $types=DB::table('portaltype')
                ->where('name','like','$'.$request->input('keywords').'%')
                ->get();
            dd($types);
        }else{
            $types=DB::table('portaltype')->where('pid','0')->orderby('path')->get();
        }
        /**
        * 判断父级板块 pname
        * 
        */
        foreach($types as $key=>$value){
            $pid=$value->pid;
            // var_dump($pid);
            if($pid==0){
                $value->pname ='--';
            }else{
                $pname=DB::table('portaltype')->where('id',$pid)->value('name');
                $value->pname=$pname;
            }

        }

        //计数器显示序号
        $count=1;
        return view('Admin.portaltype.index',['types'=>$types,'count'=>$count]);
    }



    //板块管理--添加板块
    public function getAdd()
    {
       
        //获取板块的id和name
        $types=DB::table('portaltype')->select('name','id')->where('pid','0')->get();
        //dd($types);
        return view('Admin.portaltype.add',['types'=>$types]);
    }

    //执行板块添加
    public function postInsert(Request $request)
    {      
        $data=$request->only(['pid','name']);
        
          //获取父级path
        $ppath=DB::table('portaltype')->where('id',$data['pid'])->value('path');
        //拼接path 若pid=0 则path=0,
        //否则path=父级path-父级id

        if($data['pid']==0){
            $path=0; 
        }else{
           $path=$ppath.'-'.$data['pid']; 
        }

        $data['path']=$path;
        
        //判断name是否已经存在
        $name=$data['name'];
        $r=DB::table('portaltype')->where('name',$name)->get();
        
        if(!$r){
            $res=DB::table('portaltype')->insert($data);
            if($res){
                return redirect('/admin/portaltype/index');
            }else{
                return back()->with('error','板块添加失败,重新再试');
            }
        }else{
            return back()->with('error','板块已经存在');
        } 
    }

    /**
     * 板块的修改
     */

    public function getEdit($id,$pid)
    {
        
        //dd($id,$pid);
        $pname=DB::table('portaltype')->where('id',$pid)->value('name');;
        //dd($pname);

        return view('Admin.portaltype.edit',['pname'=>$pname,'id'=>$id]);


    }
    /**
     * [getUpdate]执行板块的修改
     * @return [type] [修改页面]
     */
    public function postUpdate(Request $request)
    {
       // dd($request->all());
       $id=$request->input('id');
       $name=$request->only('name');

       // dd($id,$name);

       $res=DB::table('portaltype')->where('id',$id)->update($name);
       if($res){
            return redirect('/admin/portaltype/index')->with('success','修改成功');
       }else{
            return back()->with('error','修改失败,重新再试');
       }

    }


    /**
     * [getDelete 板块的删除]
     * @param  [type] $id [板块的id]
     * @return [type]     [删除成功与否]
    */
    public function getDelete($id)
    {
        $r=DB::table('portaltype')->where('pid',$id)->count();
        // dd($r);
        if($r){
            return back()->with('error','此板块有下属板块,不能删除');
        }
        $res=DB::table('portaltype')->where('id',$id)->delete();

        
        if($res){
            return redirect('/admin/portaltype/index')->with('success','板块删除成功');
        }else{
            return back()->with('error','板块删除失败');
        }
    }
    /**
     * 付板块下子版块的查询
     * @param  $id 为父板块的id =子版块的pid
     * @return [type]     [description]
     */
    public function getScan($id)
    {   
        //所有的子版块
        $types=DB::table('portaltype')->where('pid',$id)->get();
        //父级板块
        $pname=DB::table('portaltype')->where('id',$id)->value('name');
        // dd($pname);
        // dd($types);
        $count=1;
        return view('Admin.portaltype.scan',['types'=>$types,'count'=>$count,'pname'=>$pname]);
    }

}
